package com.tangtang.common.Vaildatoroption;


import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

//@Target注解大意，属性，方法，构造器之类的解释（是一个枚举类型的方法）
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)  //重写错误提示方法（非强制存在），一个枚举类型的方法
@Documented  //大意上主要是做javadoc纪录使用的，（非强制存在）
//@Constraint在自定义校验规则里面，这个必须添加的一个注解，（一个数组，指定校验方法的）
//@Constraint如果想指定自己构造的方法，可以实现这个接口implements ConstraintValidator<UrgentOutStoreAnno,AlyUrgentOutStoreApplyAddDto>
@Constraint(validatedBy = { StatusVaildator.class }) //这个指向的是一个xxx.class文件
public @interface ListValue {
    //校验规则里面必须满足下面三条属
        // 1）提示的错误消息(从使用注解的位置，获取提示消息)
        // 2）分组的使用
    String message() default "{com.tangtang.gulimall.product.Autozhujie.message}";

    Class<?>[] groups() default { };

    Class<? extends Payload>[] payload() default { };

    //vals是自定义组件自己设定的
    int[] vals() default { };
}
